/* 
    封装axios
    请求拦截器
    响应拦截器
*/

import Axios from "axios";
import router from "../router";
let url;
if (process.env.NODE_ENV == "development") {
  // 开发环境中
  url = "http://192.168.119.3:11329";
} else {
  // 生产环境中
  url = "http://127.0.0.1:8002";
}

// 引入提示框
import { MessageBox } from "element-ui";
import { Message } from "element-ui";
console.log("config=====", process.env.NODE_ENV);
const axios = Axios.create({
  baseURL: url,
  timeout: 150000, // request timeout
});

let showMsg = true; //阻止错误多次弹窗

// 添加请求拦截器  作用是在请求发送前进行一些操作
axios.interceptors.request.use(
  function (config) {
    let configurl = url;
    // 获取存储token中的值
    let userinfo =
      JSON.parse(localStorage.getItem("userInfo")) ||
      "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjVjM2U4ZDQ5LWNiNjktNGY5Ni1iYWU2LTlhZjA0OWVkYzRhOSJ9.69Ly9D-1I7tsVexazkdDLTfcDOTP03fh6gwGKcKzFYhB2jMgUmMOWuDVe2HEywpYQgm7LTNDk6X8fFhNG0y6wA";
    // 如果有用户信息，就在请求前加token，我这里是接口返回两个token，所以判断了一下对应的接口加对应的token
    console.log("config", config);
    config.headers.Authorization = userinfo;
    // if (userinfo) {
    //   let tokens = userinfo.cli_user.token;
    //   let xcxtoken = userinfo.wx_user.token;

    //   // 在发送请求之前做些什么
    //   if (tokens && typeof tokens === "string") {
    //     if (configurl.indexOf("/api_wx") != -1) {
    //       config.headers.Authorization = xcxtoken;
    //     } else {
    //       config.headers.Authorization = tokens;
    //     }
    //   }
    // }
    // 如果一个token，直接使用这个
    // let userinfo = JSON.parse(localStorage.getItem('userInfo')) || ''
    // let tokens = userinfo.token
    // 在发送请求之前做些什么
    // if (tokens && typeof tokens === 'string') {
    // config.headers.token = tokens;
    // }
    return config;
  },
  function (error) {
    // 抛出错误
    Message.error("请求中错误:" + error);
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器  作用是在接收到响应后进行一些操作
axios.interceptors.response.use(
  function (response) {
    console.log("response", response);
    // 对响应数据做点什么
    if (response.status == 200) {
      // 接口请求成功做些什么
      // if (response.data.code != 0) {
      //阻止弹窗多次弹出
      // if (showMsg) {
      //   MessageBox.alert(response.data.msg, "错误1", {
      //     confirmButtonText: "确定",
      //     type: "error",
      //   }).then(() => {
      //     if (response.data.code == 401) {
      //       localStorage.removeItem("userInfo");
      //       router.replace("/login");
      //     }
      //   });
      //   showMsg = false;
      //   setTimeout(() => {
      //     showMsg = true;
      //   }, 3000);
      // }
      // }
    } else {
      // 获取成功后的错误提示
      MessageBox.alert("系统错误", "错误2", {
        confirmButtonText: "确定",
        type: "error",
      });
    }

    return response;
  },
  function (error) {
    // 在这里还可以进行响应码的判断
    // switch (error.response.status) {
    //    case 400:
    //      error.message = '错误请求'
    //    break;
    //    case 500:
    //      error.message = '服务器端出错'
    //      break;
    //  }
    // 抛出错误提示
    MessageBox.alert(error, "错误3", {
      confirmButtonText: "确定",
      type: "error",
    });
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);
export default axios;
